1. Technical Field
The present invention is directed to communications networks. More specifically, the present invention is directed to a method and apparatus of minimizing dataflow disruption in network data streams when detecting PMTU.
2. Description of Related Art
It is generally accepted that for efficient data transfer using an IP (Internet protocol) connection, the data packet size should be as large as possible. The larger the packets, the lesser the overhead associated with transferring the entire data. However, if a packet is larger than any intermediate link (e.g., a router) can process, the packet will be fragmented at that link. The maximum size packet that a router can process without fragmenting the packet is called an MTU (maximum transmission unit). The maximum size packet that can be transferred from a transmitting host to a receiving host without fragmentation is called PMTU (path maximum transmission unit). Consequently, the PMTU is a function of the maximum size packets that all intermediate routers in an IP connection can process without fragmenting the packets.
It is well known that the path between two hosts on the Internet may vary over time. Indeed, there have been path variations based on types of data being transferred between two hosts. Consequently, the PMTU may vary over time. If the PMTU decreases during transmission of a particular piece of data, the packets may have to be fragmented.
When a packet is fragmented, it is split into multiple parts, each part containing enough information to allow for reassembly at the receiving host. Thus, once fragmented a packet will not be reassembled until it reaches its destination. Fragmentation is undesirable for numerous reasons. For example, if any one fragment from a packet is dropped, the entire packet has to be retransmitted. Further, it imposes extra processing load on the routers that have to split the packets. Last but not least, some firewalls may block all fragments because they don't contain the header information for a higher layer protocol (e.g., TCP) needed for filtration.
Thus, to ascertain that the largest size packets are being transmitted over an IP connection without being fragmented, the transmitting host periodically tries to detect PMTU variations. RFC (Request for Comments) 1191 describes a procedure to detect increases in the PMTU. Specifically, RFC 1191 suggests that a transmitting host should periodically send a larger size packet with an instruction that the packet not be fragmented. If the PMTU has not changed, the larger size packet will be dropped and the router that drops the packet will send an error message back to the host. If the PMTU has increased enough to allow the packet to reach its destination, then no error message will be received by the host. The host then may continue sending packets of that increased size.
RFC is a series of notes about the Internet, started in 1969 (when the Internet was still ARPANET). An Internet document can be submitted to the IETF (Internet Engineering Task Force) by anyone, but the IETF decides if the document becomes an RFC. If the document gains enough interest, it may eventually evolve into an Internet standard. Each RFC is designated by an RFC number. Once published, an RFC never changes. Modifications to an original RFC are assigned a new RFC number.
In any case, the procedure suggested by RFC 1191 to detect PMTU increases may potentially slow down the data transfer. Particularly, the PMTU is not likely to change very often. Thus, each time the transmitting host tries to detect increases in the PMTU, the data packet used toward that end will most likely be dropped. When the data packet is dropped, the application program that is transferring the data has to detect such and retransmit the packet. Depending on the length of the data being transferred, the transfer rate may be affected quite considerably.
Thus, what is needed is a method and apparatus for detecting PMTU increases that will not affect transfer rate of data.